/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package cnsatmsmart.automation.mmi.controller.IO;

import java.awt.Image;
import java.awt.Toolkit;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

/**
 * Kelas untuk melakukan penyalinan gambar ke clipboard dengan system clipboard
 * @author SIK - PTIK, BPPT
 */
public class ImageWriter {
    
    /**
     * Prosedur untuk menyimpan gambar ke system clipboard
     * @param image Gambar yang akan disimpan ke system clipboard
     */
    public static void setClipboard(Image image) {
    ImageSelection imageSelection = new ImageSelection(image);
    Toolkit.getDefaultToolkit().getSystemClipboard().setContents(imageSelection, null);
  }

  /**
   * Inner class yang akan memegang gambar selama berada di clipboard
   */
  public static class ImageSelection implements Transferable
  {
    //Gambar yang akan ditempatkan oleh ImageSelection
    private Image image;

    /**
     * Konstruktor
     * @param image Gambar yang akan ditempatkan oleh ImageSelection
     */
    public ImageSelection(Image image) {
      this.image = image;
    }

    /**
     * Fungsi untuk mengembalikan flavors yang didukung oleh implementasi ini
     * @return flavors yang didukung oleh implementasi ini
     */
    public DataFlavor[] getTransferDataFlavors()
    {
      return new DataFlavor[] {DataFlavor.imageFlavor};
    }

    /**
     * Fungsi untuk mengetahui apakah suatu flavor didukung
     * @param flavor Flavor yang ingin diketahui apakah didukung atau tidak
     * @return Mengembalikan true jika flavor didukung 
     */
    public boolean isDataFlavorSupported(DataFlavor flavor)
    {
      return DataFlavor.imageFlavor.equals(flavor);
    }

    /**
     * Fungsi untuk mengembalikan gambar yang ditempatkan oleh objek Transferable
     * @param flavor
     * @return Gambar yang ditempatkan oleh objek Transferable
     * @throws UnsupportedFlavorException
     * @throws IOException
     */
    public Object getTransferData(DataFlavor flavor)
      throws UnsupportedFlavorException,IOException
    {
      if (!DataFlavor.imageFlavor.equals(flavor))
      {
        throw new UnsupportedFlavorException(flavor);
      }
      // else return the payload
      return image;
    }
  }
}
